package com.lancoo.cvas.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;
import java.util.Objects;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 排课冲突信息
 * 
 * @author liufeng
 * @email 1037383243@qq.com
 * @date 2023-12-04 11:54:00
 */
@Data
@TableName("schedule_conflict_info")
@ApiModel("冲突信息")
public class ScheduleConflictInfo implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 排课冲突信息
	 */
	@TableId(value = "id", type = IdType.AUTO)
	@ApiModelProperty("排课冲突id")
	private Long id;
	/**
	 * 任务id
	 */
	@ApiModelProperty("任务id")
	private Integer taskId;
	/**
	 * 行政班id
	 */
	@ApiModelProperty("教学班id")
	private Long teachingClassId;
	/**
	 * 教室id
	 */
	@ApiModelProperty("教室id")
	private Long roomId;
	/**
	 * timeCode
	 */
	@ApiModelProperty("课时编码")
	private String timeCode;

	@ApiModelProperty("课时分组")
	private String timeGroup;

	@ApiModelProperty("冲突课时分组")
	private String clashTimeGroup;

	/**
	 * :教学班冲突 2教室冲突 3教师冲突 4学生冲突 6行政班冲突
	 */
	@ApiModelProperty("冲突类型")
	private Integer conflictType;
	/**
	 * 冲突原因
	 */
	@ApiModelProperty("冲突原因")
	private String conflictReason;
	/**
	 * 与当前教学班排课单元，产生冲突的教学班id
	 */
	@ApiModelProperty("产生冲突的教学班id")
	private Long clashTeachingClassId;
	/**
	 * 冲突的周次二进制字符串
	 */
	@ApiModelProperty("冲突的周次二进制字符串")
	private String clashWeeks;
	/**
	 * 冲突点。学生id /教师id
	 */
	@ApiModelProperty("冲突点")
	private Long clashUnit;

	@ApiModelProperty("授课方式")
	private Integer hourType;

	@ApiModelProperty("冲突的授课方式")
	private Integer clashHourType;
	/**
	 * 删除标识：
0：未删除
1：删除
	 */
	@ApiModelProperty("删除标识")
	private Integer deleted;
	/**
	 * 
	 */
	private String reserve;

	//与当前教学班排课单元，产生冲突的教学班的排课单元id
	@TableField(exist = false)
	@ApiModelProperty("与当前教学班排课单元，产生冲突的教学班的排课单元id")
	private Integer clashCourseUnitId;

	@TableField(exist = false)
	@ApiModelProperty("教室")
	private String roomName;

	@Override
	public boolean equals(Object o) {
		if (this == o) {
			return true;
		}
		if (o == null || getClass() != o.getClass()) {
			return false;
		}
		ScheduleConflictInfo that = (ScheduleConflictInfo) o;
		return Objects.equals(taskId, that.taskId) &&
				Objects.equals(teachingClassId, that.teachingClassId) &&
				Objects.equals(roomId, that.roomId) &&
				Objects.equals(timeCode, that.timeCode) &&
				Objects.equals(clashWeeks, that.clashWeeks) &&
				Objects.equals(hourType, that.hourType);
	}


}
